import { initMixin } from "./init";
import { renderMixin } from "./render.js";
import {callHook, lifeCycleMixin} from "./lifecycle";
import { initGlobalAPI } from "./global-api/index";
import { nextTick } from "./observer/scheduler";
import {mergeOptions} from "./utils";
import {initState} from "./state";

// new Vue({el:'#app',data:{msg:'heima chengxuyuan '}}})

// 类或者构造函数
function Vue(options) {
  // 内部要进行初始化的操作
  this._init(options); // 初始化操作
}

// _init方法，通过initMixin方法再vue的prototype上挂载上去的

// 原型模式
// 往vue的原型上挂载一个_init方法，$mount方法
initMixin(Vue); // 添加原型的方法
renderMixin(Vue);
lifeCycleMixin(Vue);

// initGlobalApi 给构造函数来扩展全局的方法
initGlobalAPI(Vue);
Vue.prototype.$nextTick = nextTick;
export default Vue;
